//加载express模板
var express = require('express')
//加载模板处理模块
var mongoose = require('mongoose')
//加载body-parser，用来处理post提交过来的数据
var bodyParser = require('body-parser')
//加载cookies模块
var Cookies = require('cookies')
var swig = require('swig')
//加载数据库模块

var app = express()

var User = require('./models/User')

//设置静态文件托管目录
//访问的url以/public开始，那么直接返还对应__dirname+'/public'下的文件
app.use('/public', express.static(__dirname + '/public'))

//配置应用模板
//定义模板引擎
//第一个参数，模板引擎名称，模板文件后缀
//第二个参数，用以解析处理模板内容的方法
app.engine('html', swig.renderFile)

//模板文件存放目录，第一个参数必须是views，第二个参数是目录
app.set('views', './views')
//注册所使用的模板引擎，第一个参数必须是view engine，
//第二个参数需和模板引擎的第一个参数一致
app.set('view engine', 'html')
//设置swig页面不缓存
swig.setDefaults({ cache: false })

//设置cookie
app.use(function(req, res, next) {
  req.cookies = new Cookies(req, res)
  next()
})
app.use(bodyParser.urlencoded({ extended: true }))
//设置cookie
app.use(function(req, res, next) {
  req.cookies = new Cookies(req, res)
  //解析登录用户的cookie信息
  req.userInfo = {}
  if (req.cookies.get('userInfo')) {
    try {
      req.userInfo = JSON.parse(req.cookies.get('userInfo'))
      User.findById(req.userInfo._id).then(function(userInfo) {
        req.userInfo.isAdmin = Boolean(userInfo.isAdmin)
        next()
      })
    } catch (e) {}
  } else {
    next()
  }
})

//根据不同的功能划分模块
app.use('/admin', require('./router/admin'))
app.use('/api', require('./router/api'))
app.use('/', require('./router/main'))

mongoose.connect('mongodb://localhost:27018/blog', function(err) {
  if (err) {
    console.log('数据库连接失败')
  } else {
    console.log('数据库连接成功')
    app.listen(8081)
  }
})
